package com.ds.infra.im.protocol;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 自定义协议消息
 * +---------------------------------------------------------------+
 * | 魔数 0xACCA | 版本号 | 序列化算法 | 指令类型 | 数据长度 | 数据内容 |
 * | 2字节       | 1字节  | 1字节      | 1字节    | 4字节   | N字节   |
 * +---------------------------------------------------------------+
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProtocolMsg {

    // 魔数
    public static final short MAGIC_NUMBER = (short) 0xACCA;

    // 版本号
    private byte version;

    // 序列化算法 0:JSON 1:Protobuf
    private byte serializerAlgorithm;

    // 指令类型
    private byte command;

    // 数据长度
    private int length;

    // 数据内容
    private byte[] data;
}
